<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <script>
        let target1, source1, source2;
        // ------------- 代码 1 基本用法 -------------
        target1 = { a: 1 };
        source1 = { b: 2 };
        source2 = { c: 3 };
        // 将 source1 和 source2 合并到 target 中
        Object.assign(target1, source1, source2);
        console.log(target1); // {a:1, b:2, c:3}

        // ------------- 代码 2 同名属性处理 -------------
         target1 = { a: 1, b: 1 };
         source1 = { b: 3, c: 2 };
         source2 = { c: 4 };
         Object.assign(target1, source1, source2);
        // 可以看到，后面对象的同名属性值将覆盖前面对象的同名属性值
        console.log(target1); // {a:1, b:3, c:4}

        // ------------- 代码 3 一个参数不做处理 -------------
        target1 = { a: 1 };
        Object.assign(target1)
        console.log(target1);

        // ------------- 代码 4 非对象转成对象 -------------
        // 如果参数不是对象
        let value = Object.assign(2);
        console.log(value);
        console.log(typeof value);

        // ------------- 代码 5 null undefined 作为参数 -------------
        // 如果参数为 null 或 undefined，或者无参数（相当于 undefined），抛出报错
        // TypeError: Cannot convert undefined or null to object
        Object.assign(null);
        Object.assign(undefined);
        Object.assign();
        </script>
</head>
<body>
    
</body>
</html>